<?php

class GcNodeUpdateHandler {
	
	// obiekt node, który akualizujemy
	private $_node;
	
	// nazwa operacji, którą wykonujemy
	private $_op;
	
	public function __construct($op, &$node) {
		$this->_node = &$node;
		$this->_op   = $op;
	}
	
	public function handle() {
		
		switch($this->_op) {
			case 'insert':
				$this->insertGroupHandler();
			break;
      case 'update':
      	$this->updateGroupHandler();
      break;
      case 'delete':
      	$this->removeGroupHandler();
      break;
		}
		
	}
	
	/**
	 * Funkcja zajmująca się dodawaniem nowych grup
	 * @return unknown_type
	 */
	private function insertGroupHandler() {
		if($this->_node->group_type) {// czy ma to być grupa główna
			db_query(
			  "INSERT INTO {gc_main_groups} (nid, type) VALUES (%d, '%s')",
			  $this->_node->nid,
			  $this->_node->type
			);
		}
	} 
	
/**
   * Funkcja zajmująca się usuwaniem informacji podczas kasowania node'a
   * @return unknown_type
   */
  private function removeGroupHandler() {
    db_query(
        "DELETE FROM {gc_main_groups} WHERE nid=%d",
        $this->_node->nid
    );
  }
	
	/**
	 * Funkcja zajmująca się aktualizacją grup
	 * @return unknown_type
	 */
	private function updateGroupHandler() {
		
		// wymazujemy ew wpis w tabeli grup głównych dotyczący aktualnej grupy
		$this->removeGroupHandler();
    
		// możemy dodawać
    $this->insertGroupHandler();
	}

}